গ্রুপিং ডেটা (Group By)

Microsoft Technologies - লিংক (LinQ) বেসিক LINQ অপারেশন (Basic LINQ Operations) |
171
171

LINQ to DataSet এ Group By অপারেটর ব্যবহার করে আপনি ডেটাকে নির্দিষ্ট একটি বা একাধিক কন্ডিশনের উপর গ্রুপ করতে পারেন। এটি SQL-এর GROUP BY এর সমান, যেখানে আপনি ডেটাকে একটি নির্দিষ্ট ফিল্ড বা কন্ডিশনের মাধ্যমে গ্রুপ করেন এবং তারপর প্রতিটি গ্রুপের উপর কোনো অপারেশন যেমন Sum, Count, Average ইত্যাদি প্রয়োগ করতে পারেন।

LINQ-এর group by ক্লজ ব্যবহার করে DataTable বা DataSet-এর ডেটা গ্রুপ করা যায় এবং এই গ্রুপগুলির উপর বিভিন্ন ধরনের অ্যাগ্রিগেট ফাংশনও প্রয়োগ করা সম্ভব।


LINQ to DataSet-এ Group By এর ব্যবহার

১. একটি কলামের উপর গ্রুপিং (Group By Single Column):

ধরা যাক, আপনার কাছে একটি পণ্য (Product) সম্পর্কিত ডেটা রয়েছে এবং আপনি সেই ডেটা পণ্যের Category অনুযায়ী গ্রুপ করতে চান।

using System;
using System.Data;
using System.Linq;

class Program
{
    static void Main()
    {
        // DataTable তৈরি
        DataTable dt = new DataTable("Products");
        dt.Columns.Add("ProductID", typeof(int));
        dt.Columns.Add("ProductName", typeof(string));
        dt.Columns.Add("Category", typeof(string));
        dt.Columns.Add("Price", typeof(decimal));

        // DataTable-এ ডেটা ইনসার্ট করা
        dt.Rows.Add(1, "Product1", "Category1", 20.5);
        dt.Rows.Add(2, "Product2", "Category1", 30.0);
        dt.Rows.Add(3, "Product3", "Category2", 15.5);
        dt.Rows.Add(4, "Product4", "Category2", 25.0);

        // LINQ কুয়েরি দিয়ে Category অনুসারে গ্রুপিং করা
        var groupedProducts = from product in dt.AsEnumerable()
                              group product by product.Field<string>("Category") into productGroup
                              select new
                              {
                                  Category = productGroup.Key,
                                  Products = productGroup
                              };

        // গ্রুপড ডেটা প্রিন্ট করা
        foreach (var group in groupedProducts)
        {
            Console.WriteLine($"Category: {group.Category}");
            foreach (var product in group.Products)
            {
                Console.WriteLine($" - {product.Field<string>("ProductName")}: {product.Field<decimal>("Price")}");
            }
        }
    }
}

আউটপুট:

Category: Category1
 - Product1: 20.5
 - Product2: 30
Category: Category2
 - Product3: 15.5
 - Product4: 25

এখানে Category কলামের ভিত্তিতে পণ্যগুলো গ্রুপ করা হয়েছে, এবং তারপর প্রতিটি গ্রুপের পণ্যগুলোর নাম ও মূল্য প্রদর্শিত হয়েছে।

২. গ্রুপিং এবং অ্যাগ্রিগেট ফাংশন (Group By with Aggregate Functions):

আপনি group by এর সাথে Sum, Count, Average ইত্যাদি অ্যাগ্রিগেট ফাংশন ব্যবহার করতে পারেন। নিচে একটি উদাহরণ দেয়া হলো যেখানে Category অনুসারে গ্রুপিং করার পর প্রতিটি গ্রুপের মোট মূল্য (Sum) হিসাব করা হয়েছে।

using System;
using System.Data;
using System.Linq;

class Program
{
    static void Main()
    {
        // DataTable তৈরি
        DataTable dt = new DataTable("Products");
        dt.Columns.Add("ProductID", typeof(int));
        dt.Columns.Add("ProductName", typeof(string));
        dt.Columns.Add("Category", typeof(string));
        dt.Columns.Add("Price", typeof(decimal));

        // DataTable-এ ডেটা ইনসার্ট করা
        dt.Rows.Add(1, "Product1", "Category1", 20.5);
        dt.Rows.Add(2, "Product2", "Category1", 30.0);
        dt.Rows.Add(3, "Product3", "Category2", 15.5);
        dt.Rows.Add(4, "Product4", "Category2", 25.0);

        // LINQ কুয়েরি দিয়ে Category অনুসারে গ্রুপিং এবং মোট মূল্য বের করা
        var groupedProducts = from product in dt.AsEnumerable()
                              group product by product.Field<string>("Category") into productGroup
                              select new
                              {
                                  Category = productGroup.Key,
                                  TotalPrice = productGroup.Sum(p => p.Field<decimal>("Price"))
                              };

        // গ্রুপড ডেটার মোট মূল্য প্রিন্ট করা
        foreach (var group in groupedProducts)
        {
            Console.WriteLine($"Category: {group.Category}, Total Price: {group.TotalPrice}");
        }
    }
}

আউটপুট:

Category: Category1, Total Price: 50.5
Category: Category2, Total Price: 40.5

এখানে প্রতিটি Category এর জন্য পণ্যের মোট মূল্য হিসাব করা হয়েছে।

৩. গ্রুপিং এবং Count ফাংশন (Group By with Count):

আপনি Count ফাংশনও ব্যবহার করতে পারেন গ্রুপের মধ্যে কতটি রেকর্ড আছে তা গণনা করতে।

using System;
using System.Data;
using System.Linq;

class Program
{
    static void Main()
    {
        // DataTable তৈরি
        DataTable dt = new DataTable("Products");
        dt.Columns.Add("ProductID", typeof(int));
        dt.Columns.Add("ProductName", typeof(string));
        dt.Columns.Add("Category", typeof(string));
        dt.Columns.Add("Price", typeof(decimal));

        // DataTable-এ ডেটা ইনসার্ট করা
        dt.Rows.Add(1, "Product1", "Category1", 20.5);
        dt.Rows.Add(2, "Product2", "Category1", 30.0);
        dt.Rows.Add(3, "Product3", "Category2", 15.5);
        dt.Rows.Add(4, "Product4", "Category2", 25.0);

        // LINQ কুয়েরি দিয়ে Category অনুসারে গ্রুপিং এবং প্রতি গ্রুপে পণ্যের সংখ্যা বের করা
        var groupedProducts = from product in dt.AsEnumerable()
                              group product by product.Field<string>("Category") into productGroup
                              select new
                              {
                                  Category = productGroup.Key,
                                  ProductCount = productGroup.Count()
                              };

        // গ্রুপড ডেটার পণ্যের সংখ্যা প্রিন্ট করা
        foreach (var group in groupedProducts)
        {
            Console.WriteLine($"Category: {group.Category}, Product Count: {group.ProductCount}");
        }
    }
}

আউটপুট:

Category: Category1, Product Count: 2
Category: Category2, Product Count: 2

এখানে প্রতিটি Category এর মধ্যে কতটি পণ্য আছে তা গুনে দেখানো হয়েছে।


সারাংশ

LINQ to DataSet-এ Group By অপারেটর ব্যবহার করে আপনি DataTable বা DataSet এর ডেটাকে একটি বা একাধিক কলামের ভিত্তিতে গ্রুপ করতে পারেন এবং তারপর সেই গ্রুপগুলির উপর অ্যাগ্রিগেট ফাংশন প্রয়োগ করতে পারেন, যেমন Sum, Count, Average ইত্যাদি। এটি আপনাকে ডেটাকে বিশ্লেষণ করতে এবং বিভিন্ন গ্রুপের তথ্য একত্রিত করতে সহায়ক।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion